package main

import (
	"fmt"
	"time"
)

/*
虽然我们自己创建的匿名函数的 goroutine 内有无限循环，但程序还是正常结束了。这是因为主 goroutine 结束了，其他 goroutine 也就跟着一起结束了。
*/

func main() {
	// 合起来写，直接开启一个 goroutine 来执行匿名函数
	go func() {
		i := 0
		for { //无限循环，如果主 goroutine 不结束，这个将一直进行下去
			i++
			fmt.Printf("new goroutine: i = %d\n", i)
			time.Sleep(time.Second)
		}
	}()

	//main()创建的主 goroutine
	i := 0
	for {
		i++ //上面创建goroutine需要时间，所以主goroutine先执行，这里i = 1
		fmt.Printf("main goroutine: i = %d\n", i)
		time.Sleep(time.Second)
		if i == 2 {
			break
		}
	}
}
